// package cn.seaboot.admin.others.test;
//
// import org.apache.ibatis.datasource.pooled.PooledDataSource;
// import org.apache.ibatis.mapping.Environment;
// import org.apache.ibatis.session.Configuration;
// import org.apache.ibatis.session.SqlSession;
// import org.apache.ibatis.session.SqlSessionFactory;
// import org.apache.ibatis.session.SqlSessionFactoryBuilder;
// import org.apache.ibatis.transaction.TransactionFactory;
// import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
// /**
//  * @author Mr.css
//  * @version 2021-01-06 20:25
//  */
// import java.util.concurrent.ConcurrentHashMap;
//
// public class MybatisUtil {
//
//     public static final Logger log = LogManager.getLogger(MybatisUtil.class);
//     public static com.siger.storm.constant.Configuration config = com.siger.storm.constant.Configuration.getInstance();
//     public static ConcurrentHashMap sessionHashMap = new ConcurrentHashMap();
//     private static SqlSessionFactory sessionFactory;
//
//     public static synchronized SqlSession getSqlSession() {
//         SqlSession session = null;
//
//         try {
//             if (sessionHashMap.get(TableName.getTableName()) != null) {
//                 sessionFactory = (SqlSessionFactory) sessionHashMap.get(TableName.getTableName());
//                 if (sessionFactory.openSession() != null) {
//                     session = sessionFactory.openSession();
//                 }
//             } else {
//                 sessionFactory = CreateSessionFactory(TableName.getTableName());
//                 if (sessionFactory != null) {
//                     sessionHashMap.put(TableName.getTableName(), sessionFactory);
//                     session = sessionFactory.openSession();
//                     if (sessionFactory.openSession() != null) {
//                         session = sessionFactory.openSession();
//                     }
//                 } else {
//                     log.warn("sessionFactory is null...");
//                 }
//             }
//         } catch (Exception e) {
//             log.error(e.getMessage() + "-->catch Exception");
//         }
//         return session;
//     }
//
//
//     /**
//      * 根据库名动态创建会话
//      *
//      * @param dbName
//      * @return
//      */
//     public static synchronized SqlSessionFactory CreateSessionFactory(String dbName) {
//
//         // 创建使用缓存池的数据源
// 		/*
// 		 * <dataSource type="POOLED">
// 				<property name="driver" value="${jdbc.driverClassName}"/>
// 				<property name="url" value="${jdbc.url}"/>
// 				<property name="username" value="${jdbc.username}"/>
// 				<property name="password" value="${jdbc.password}"/>
// 			</dataSource>
// 		 */
//
//         //  数据库连接
//         PooledDataSource dataSource = new PooledDataSource();
//         dataSource.setDriver(config.getString("cloud.mysql.jdbc.driver", ""));
//         dataSource.setUsername(config.getString("cloud.mysql.user", ""));
//         dataSource.setPassword(config.getString("cloud.mysql.password", ""));
//         dataSource.setUrl(config.getString("cloud.mysql.url", "") + dbName +
//                 "?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&autoReconnect=true");
//
//         // 创建事务
//         /*
//          * <transactionManager type="JDBC" />
//          */
//         //  事务
//         TransactionFactory transactionFactory = new JdbcTransactionFactory();
//         Environment environment = new Environment(dbName, transactionFactory, dataSource);
//
//         // 加入资源
//         /*
//          * <mapper resource="ssm/BlogMapper.xml"/>
//          */
//         //  创建configuration信息, 添加映射器
//         //  **Mapper.xml 要放在 **Mapper.class 同一级目录下
//         Configuration configuration = new Configuration(environment);
//         configuration.addMapper(xxMapper.class);
//
//
//         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
//         log.info(dbName + " sqlSessionFactory created successfully...");
//
//         return sqlSessionFactory;
//     }
//
// }
